package cn.yza.设计模式.装饰者模式.eg2;

import java.math.BigDecimal;

/** 装饰者模式：动态地将责任附加到对象上。
 *  若要扩展功能，装饰者提供了比继承更有弹性的替代方案。
 *
 *        ①、装饰者和被装饰对象有相同的超类型。
 *
 * 　　　　②、你可以用一个或多个装饰者包装一个对象。
 *
 * 　　　　③、既然装饰者和被装饰对象有相同的超类型，所以在任何需要原始对象（被包装的）的场合，可以用装饰过的对象代替它。
 *
 * 　　　　④、装饰者可以在所委托被装饰者的行为之前与 / 或之后，加上自己的行为，以达到特定的目的。
 *
 * 　　　　⑤、对象可以在任何时候被装饰，所以可以在运行时动态地、不限量地用你喜欢的装饰者来装饰对象。
 * @author Honglixi
 * @create 2022-01-11 16:50
 */


//饮料抽象类
public abstract class Beverage {

    String description = "Unknown Beverage";

    public String getDescription() {
        return description;
    }

    /**
     * cost方法是用来返回饮料的价钱（需在具体类中自己实现）
     *
     * @return
     */
    public abstract BigDecimal cost();

}
